<%@page import="java.text.SimpleDateFormat"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page import="java.util.GregorianCalendar,java.util.Calendar,java.util.regex.*,java.util.*" %>
<%@page import="java.rmi.registry.LocateRegistry"%>
<%@page import="java.rmi.registry.Registry"%>
<%@page import="java.util.ArrayList"%>
<%@page import="rmi.*" %>
<%@page import="data.*" %>
<jsp:useBean id="manager" scope="session" class="manager.Manager" />
<%

String numero_securite_sociale=request.getParameter("numero_securite_sociale") ;
Patient patient=manager.getServeurRmi().getPatient(numero_securite_sociale) ;


boolean err = false;
String nom = patient.getNom_patient();
String errNom = "";
String prenom = patient.getPrenom_patient();
String errPrenom = "";
String sexe = patient.getSexe_patient();
String errSexe = "";
String photo ;
String taille = ""+patient.getTaille_patient();
String errTaille = "";
String poids = ""+patient.getPoids_patient();
String errPoids = "";
String jour=patient.getDate_naissance_patient().substring(8,10);
String mois=patient.getDate_naissance_patient().substring(5,7);
String annee=patient.getDate_naissance_patient().substring(0,4);
String date_naissance="" ;
String errDate_naissance = "";
String numero_securite_social=patient.getNumero_securite_sociale_patient();
String errNumero_securite_social="" ;
String adresse = patient.getAdresse_patient();
String errAdresse = "";
String code_postal = ""+patient.getCode_postal_patient();
String errCode_postal = "";
String ville = patient.getVille_patient();
String errVille= "" ;

String email = patient.getEmail_patient();
String errEmail = "";
String numero_telephone = patient.getNumero_telephone_patient();
String errNumero_telephone = "";
String numero_portable = patient.getNumero_portable_patient();
String errNumero_portable = "";

String errAjout="" ;

Pattern pat ;
Matcher m;

if(request.getParameter("submit") != null){ 
	numero_securite_social = request.getParameter("numero_securite_sociale");
	if(numero_securite_social == null) numero_securite_social = "";
	if(numero_securite_social.trim().equals("")){
		errNumero_securite_social = "Veuillez remplir le champ numéro de sécurité sociale";
		err = true;
	}else{
		if(numero_securite_social.length()!=15){
			errNumero_securite_social = "Longueur du numéro de sécurité sociale invalide";
			err = true;
		}else{
		 	pat = Pattern.compile("[0-9]{15}") ;
		 	m = pat.matcher(numero_securite_social) ;
		    if (!m.find()) {
		    	errNumero_securite_social = "Le numéro de sécurité sociale doit être composé que de valeurs numériques";
				err = true;
		    } 
		}
	}
	nom = request.getParameter("nom");
	if(nom == null) nom = "";
	if(nom.trim().equals("")){
		errNom = "Veuillez remplir le champ nom";
		err = true;
	}
	
	prenom = request.getParameter("prenom");
	if(prenom == null) prenom = "";
	if(prenom.trim().equals("")){
		errPrenom = "Veuillez remplir le champ prénom";
		err = true;
	}
	
	photo = request.getParameter("photo");
	if(photo == null) photo = "";
	
	sexe = request.getParameter("sexe");
	if(sexe == null) sexe = "";
	if(sexe.trim().equals("")){
		errSexe = "Veuillez remplir le champ sexe";
		err = true;
	}
	
	jour= request.getParameter("jour");
	mois= request.getParameter("mois");
	annee= request.getParameter("annee");
	if(jour == null || mois==null || annee==null) date_naissance="" ;
	if(jour.trim().equals("") || mois.trim().equals("") || annee.trim().equals("")){
		errDate_naissance = "Veuillez remplir le champ date de naissance";
		err = true;
	}else{
		try {
			SimpleDateFormat f = new SimpleDateFormat("dd/MM/yyyy" ); 
			f.setLenient(false); 
			Date d = f.parse(Integer.parseInt(jour)+"/"+Integer.parseInt(mois)+"/"+Integer.parseInt(annee) );
		}catch(Exception e) {
			errDate_naissance = "Format de date de naissance invalide";
			err = true;
		}
	}
	
	adresse = request.getParameter("adresse");
	if(adresse == null) adresse = "";
	if(adresse.trim().equals("")){
		errAdresse = "Veuillez remplir le champ adresse";
		err = true;
	}
	
	code_postal = request.getParameter("code_postal");
	if(code_postal == null) code_postal = "";
	if(code_postal.trim().equals("")){
		errCode_postal = "Veuillez remplir le champ code postal";
		err = true;
	}else{
		pat = Pattern.compile("[0-9]{5}") ;
	 	m = pat.matcher(code_postal) ;
	    if (!m.find()) {
	    	errCode_postal = "Le code postal doit être composé que de valeurs numériques";
			err = true;
	    }
	}
	
	ville = request.getParameter("ville");
	if(ville == null) ville = "";
	if(ville.trim().equals("")){
		errVille = "Veuillez remplir le champ ville";
		err = true;
	}
	
	taille = request.getParameter("taille");
	if(taille == null) taille = "";
	if(taille.trim().equals("")){
		errTaille = "Veuillez remplir le champ taille";
		err = true;
	}else{
		pat = Pattern.compile("[0-9]+\\.[0-9]+") ;
	 	m = pat.matcher(taille) ;
	    if (!m.find()) {
	    	errTaille = "Le format de taille n'est pas valide";
			err = true;
	    }
	}
	
	poids = request.getParameter("poids");
	if(poids == null) poids = "";
	if(poids.trim().equals("")){
		errPoids = "Veuillez remplir le champ poids";
		err = true;
	}else{
		pat = Pattern.compile("[0-9]+\\.[0-9]+") ;
	 	m = pat.matcher(poids) ;
	    if (!m.find()) {
	    	errTaille = "Le format de poids n'est pas valide";
			err = true;
	    }
	}
	
	email = request.getParameter("email");
	if(email == null) email = "";
	if(email.trim().equals("")){
		errEmail = "Veuillez remplir le champ email";
		err = true;
	}else{
		pat = Pattern.compile("^[_a-z0-9-]+(\\.[_a-z0-9-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)+$") ;
	 	m = pat.matcher(email) ;
	    if (!m.find()) {
	    	errEmail = "Le format de l'email n'est pas valide";
			err = true;
	    }
	}
	
	numero_telephone = request.getParameter("numero_telephone");
	if(numero_telephone == null) numero_telephone = "";
	if(numero_telephone.trim().equals("")){
		errNumero_telephone = "Veuillez remplir le champ numéro telephone";
		err = true;
	}else{
		pat = Pattern.compile("[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}") ;
	 	m = pat.matcher(numero_telephone) ;
	    if (!m.find()) {
	    	errNumero_telephone = "Le format du numéro de téléphone n'est pas valide";
			err = true;
	    }
	}
	
	numero_portable = request.getParameter("numero_portable");
	if(numero_portable == null) numero_portable = "";
	if(numero_portable.trim().equals("")){
		errNumero_portable = "Veuillez remplir le champ numéro portable";
		err = true;
	}else{
		pat = Pattern.compile("[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}\\.[0-9]{2}") ;
	 	m = pat.matcher(numero_portable) ;
	    if (!m.find()) {
	    	errNumero_portable = "Le format du numéro de portable n'est pas valide";
			err = true;
	    }
	}
	if(!err){
		if(photo.trim().equals("")) {
			photo="inconnu.png" ;	
		}else{
			/**
			* Upload file
			*/
		}
		manager.getServeurRmi().modifier(new Patient(nom, prenom, sexe, annee+"-"+mois+"-"+jour, Double.parseDouble(taille), Double.parseDouble(poids), adresse, Integer.parseInt(code_postal), ville, photo, numero_securite_social, numero_telephone, numero_portable, email)) ;
		ArrayList<String> messages = new ArrayList<String>();
		messages.add("Patient modifié");
		manager.setMessages(messages);
%>
		<jsp:forward page="fiche_patient.jsp" />
<%		
	}
}
%>

<div id="contenu_style2_haut">
</div>
<div id="contenu_style2_centre">
<form action="modifier_patient.jsp" method="post">
						<table> 
				<tr> 
					<td style="text-align:center;font-weight:bold;width:200px;">Numero sécurité sociale :</td> 
					<td style="text-align:left;"><%= numero_securite_sociale %></td>
					<input type="hidden" name="numero_securite_sociale" value="<%= numero_securite_sociale %>"/> 
					<td>&nbsp;</td>
				</tr>
<%
				if(!errNumero_securite_social.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errNumero_securite_social %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>				
				<tr> 
					<td style="text-align:center;font-weight:bold;">Nom * :</td> 
					<td style="text-align:left;"><input type="text" name="nom" size="40" maxlength="255" value="<%= nom %>"/></td> 
					<td>&nbsp;</td>
				</tr> 
<%
				if(!errNom.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errNom %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>					
				<tr> 
					<td style="text-align:center;font-weight:bold;">Prénom * :</td> 
					<td style="text-align:left;"><input type="text" name="prenom" size="40" maxlength="255" value="<%= prenom %>"/></td> 
					<td>&nbsp;</td>
				</tr>
<%
				if(!errPrenom.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errPrenom %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>			 
				<tr> 
					<td style="text-align:center;font-weight:bold;">Sexe * :</td> 
					<td style="text-align:left;"> 
<% 
						if(sexe.trim().equals("homme")) {
%>
							<input type="radio" name="sexe" value="homme" id="homme" checked="checked"/> <label for="homme">Homme</label> 
<%							
						}else{
%>
							<input type="radio" name="sexe" value="homme" id="homme" /> <label for="homme">Homme</label> 
<%							
						}
						if(sexe.trim().equals("femme")) {
%>
							<input type="radio" name="sexe" value="femme" id="femme" checked="checked"/> <label for="femme">Femme</label> 
<%							
						}else{
%>
							<input type="radio" name="sexe" value="femme" id="femme" /> <label for="femme">Femme</label> 
<%							
						}
%>							
       						
					</td> 
					<td>&nbsp;</td>
				</tr>
<%
				if(!errSexe.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errSexe %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>	
				<tr> 
					<td style="text-align:center;font-weight:bold;">Date de naissance * :</td> 
					<td style="text-align:left;">
						<select name="jour">
							<option value=""></option>
<%
							for(int i=1;i<=31;i++) {
								if(!jour.trim().equals("") && Integer.parseInt(jour)==i) {
%>
									<option value="<%= i %>" selected="selected"><%= i %></option>
<%									
								}else{
%>
								<option value="<%= i %>"><%= i %></option>
<%						
								}
							}
%>		
						</select>
						<select name="mois">
							<option value=""></option>
<%
							for(int i=1;i<=12;i++) {
								if(!mois.trim().equals("") && Integer.parseInt(mois)==i) {
%>
									<option value="<%= i %>" selected="selected"><%= i %></option>
<%									
								}else{
%>
								<option value="<%= i %>"><%= i %></option>
<%						
								}						
							}
%>		
						</select>
						<select name="annee">
							<option value=""></option>
<%
							GregorianCalendar calendar = new GregorianCalendar(); 
							int year = calendar.get(Calendar.YEAR);
							for(int i=year-100;i<=year;i++) {
								if(!annee.trim().equals("") && Integer.parseInt(annee)==i) {
%>
									<option value="<%= i %>" selected="selected"><%= i %></option>
<%									
								}else{
%>
								<option value="<%= i %>"><%= i %></option>
<%						
								}					
							}
%>		
						</select>				
					</td> 
					<td>&nbsp;</td>
				</tr> 
<%
				if(!errDate_naissance.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errDate_naissance %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>	
				<tr> 
					<td style="text-align:center;font-weight:bold;">Taille * <span style="font-size:10px;font-style:italic;">(ex : XX.XX)</span> :</td> 
					<td style="text-align:left;"><input type="text" name="taille" size="10" maxlength="5" value="<%= taille %>"/></td> 
					<td>&nbsp;</td>
				</tr>
<%
				if(!errTaille.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errTaille %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>	
				<tr> 
					<td style="text-align:center;font-weight:bold;">Poids * <span style="font-size:10px;font-style:italic;">(ex : XX.XX)</span> :</td> 
					<td style="text-align:left;"><input type="text" name="poids" size="10" maxlength="5" value="<%= poids %>"/></td> 
					<td>&nbsp;</td>
				</tr>  
<%
				if(!errPoids.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errPoids %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>	
				<tr> 
					<td style="text-align:center;font-weight:bold;">Adresse * :</td> 
					<td style="text-align:left;"><input type="text" name="adresse" size="40" maxlength="50" value="<%= adresse %>"/></td> 
					<td>&nbsp;</td>
				</tr> 
<%
				if(!errAdresse.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errAdresse %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>	
				<tr> 
					<td style="text-align:center;font-weight:bold;">Code postal * <span style="font-size:10px;font-style:italic;">(ex : XXXXX)</span> :</td> 
					<td style="text-align:left;"><input type="text" name="code_postal" size="10" maxlength="5" value="<%= code_postal %>"/></td> 
					<td>&nbsp;</td>
				</tr> 
<%
				if(!errCode_postal.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errCode_postal %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>	
				<tr> 
					<td style="text-align:center;font-weight:bold;">Ville * :</td> 
					<td style="text-align:left;"><input type="text" name="ville" size="40" maxlength="50" value="<%= ville %>"/></td>
					<td>&nbsp;</td>
				</tr> 
<%
				if(!errVille.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errVille %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>	
				<tr> 
					<td style="text-align:center;font-weight:bold;">Numéro de téléphone * :<br /><span style="font-size:10px;font-style:italic;">(ex : XX.XX.XX.XX.XX)</span></td> 
					<td style="text-align:left;"><input type="text" name="numero_telephone" size="20" maxlength="14" value="<%= numero_telephone %>"/></td>
					<td>&nbsp;</td>
				</tr> 
<%
				if(!errNumero_telephone.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errNumero_telephone %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>	
				<tr> 
					<td style="text-align:center;font-weight:bold;">Numéro de portable * :<br /><span style="font-size:10px;font-style:italic;">(ex : XX.XX.XX.XX.XX)</span></td> 
					<td style="text-align:left;"><input type="text" name="numero_portable" size="20" maxlength="14" value="<%= numero_portable %>"/></td> 
					<td>&nbsp;</td>
				</tr> 
<%
				if(!errNumero_portable.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errNumero_portable %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>	
				<tr> 
					<td style="text-align:center;font-weight:bold;">E-mail * :<br /><span style="font-size:10px;font-style:italic;">(ex : patient.patient@patient.fr)</span></td> 
					<td style="text-align:left;"><input type="text" name="email" size="40" maxlength="50" value="<%= email %>"/></td>
					<td>&nbsp;</td>
				</tr> 
<%
				if(!errEmail.trim().equals("")) {
%>		
					<tr>
						<td>&nbsp;</td>
						<td id="erreur"><%= errEmail %></td>
						<td>&nbsp;</td>
					</tr>
<%
				}
%>	
				<tr> 
					<td>&nbsp;</td> 
					<td>&nbsp;</td> 
				</tr> 
				<tr> 
					<td>&nbsp;</td> 
					<td id="erreur"><%= errAjout %></td>
					<td  style="text-align:right;"><input type="submit" name="submit" value="Modifier le patient" /></td> 
				</tr> 
				<tr> 
					<td style="font-style:italic;font-size:10px;">* : champ obligatoire</td> 
					<td>&nbsp;</td> 
					<td>&nbsp;</td>
				</tr> 
			</table> 
		</form>
</div>
<div id="contenu_style2_bas">
</div>